import axios from 'axios';
import types from "@/constants/types";
import store from '@/store';

let Tofile = {
  //将图片Base64 转成文件
  _uploadImg(base64String, callBack = function (url) {
    store.commit(types.IMGURL, url);
  }) {
    var bytes = window.atob(base64String.split(',')[1]);
    var ab = new ArrayBuffer(bytes.length);
    var ia = new Uint8Array(ab);
    for (var i = 0; i < bytes.length; i++) {
      ia[i] = bytes.charCodeAt(i); //这里有点疑惑，ia是怎么改变ab的？注：①
    }
    //Blob对象
    var blob = new Blob([ab], {
      type: 'image/jpeg'
    }); //type为图片的格式
    //FormData对象
    var fd = new FormData();
    //TDOD Ajax或者其他方式上传FormData对象
    //FormData对象接受三个参数，第三个参数为文件名，通常我们只传前两个参数，第三个参数不传则使用默认文件名，这里使用的Blob对象，所以需要一个文件名，用时间戳代替。
    fd.append('file', blob, Date.now() + '.png');
    var xhr = new XMLHttpRequest();
    xhr.open('POST', window.FILEIP, true);
    xhr.send(fd);
    xhr.onreadystatechange = function () {
      if (xhr.readyState == 4 && xhr.status == 200) {
        if (JSON.parse(xhr.response).code != 200) {
          store.commit(types.IMGURL, '上传图片错误！');
          return;
        }
        callBack(JSON.parse(xhr.response).data);
      }
    }
  },
  uploadImg(imgUrl, callBack = function () {
    store.commit(types.IMGURL, JSON.parse(xhr.response).data);
  }) {
    var bytes = window.atob(base64String.split(',')[1]);
    var ab = new ArrayBuffer(bytes.length);
    var ia = new Uint8Array(ab);
    for (var i = 0; i < bytes.length; i++) {
      ia[i] = bytes.charCodeAt(i); //这里有点疑惑，ia是怎么改变ab的？注：①
    }
    //Blob对象
    var blob = new Blob([ab], {
      type: 'image/jpeg'
    }); //type为图片的格式
    //FormData对象
    var fd = new FormData();
    //TDOD Ajax或者其他方式上传FormData对象
    //FormData对象接受三个参数，第三个参数为文件名，通常我们只传前两个参数，第三个参数不传则使用默认文件名，这里使用的Blob对象，所以需要一个文件名，用时间戳代替。
    fd.append('file', blob, Date.now() + '.png');
    var xhr = new XMLHttpRequest();
    xhr.open('POST', window.FILEIP, true);
    xhr.send(fd);
    xhr.onreadystatechange = function () {
      if (xhr.readyState == 4 && xhr.status == 200) {
        if (JSON.parse(xhr.response).code != 200) {
          store.commit(types.IMGURL, '上传图片错误！');
          return;
        }
        callBack();
      }
    }
  }

}
export default Tofile;